home *** CD-ROM | disk | FTP | other *** search
/ PC World 2008 March / PCWorld_2008-03_cd.bin / v cisle / mediacoder / MediaCoder-0.6.1.4045.exe / htdocs / wmcfg / wmcfg.js < prev    next >
Text File  |  2007-05-27  |  5KB  |  189 lines

  1. var url = document.location.href;
  2. var xmlhttp = new XMLHttpRequest;
  3.  
  4. function GetToken(str, token)
  5. {
  6.     var idx = str.indexOf(token + '=');
  7.     if (idx <= 0) return null;
  8.     var argstr = str.substring(idx + token.length + 1);
  9.     idx = argstr.indexOf('&');
  10.     return idx >=0 ? argstr.substring(0, idx) : argstr;
  11. }
  12.  
  13. function SetPref(param, val)
  14. {
  15.     xmlhttp.open("GET", "/prefs/set?" + param + "=" + val, false);
  16.     xmlhttp.send(null);
  17. }
  18.  
  19. function GetPref(param)
  20. {
  21.     xmlhttp.open("GET", "/prefs/get?path=" + param, false);
  22.     xmlhttp.send(null);
  23.     return xmlhttp.responseText;
  24. }
  25.  
  26. function GetPrefInt(param)
  27. {
  28.     xmlhttp.open("GET", "/prefs/get?type=int&path=" + param, false);
  29.     xmlhttp.send(null);
  30.     return parseInt(xmlhttp.responseText);
  31. }
  32.  
  33. function RevertPrefValue(param)
  34. {
  35.     xmlhttp.open("GET", "/prefs/revert?path=" + param, false);
  36.     xmlhttp.send(null);
  37.     return xmlhttp.responseText;
  38. }
  39.  
  40. function loadXML(xmlFile)
  41. {
  42.     var $xml = new XMLHttpRequest;
  43.     $xml.open('GET', xmlFile, false);
  44.     $xml.overrideMimeType('text/xml');
  45.     $xml.send(null);
  46.     var xml = $xml.responseXML;
  47.     if (!xml) {
  48.         alert("Unable to load "+xmlFile);
  49.         return null;
  50.     }
  51.     return xml;
  52. }
  53.  
  54. function transformXML(xmlDoc, xslDoc, element)
  55. {
  56.     var XSLT = new XSLTProcessor;
  57.     XSLT.importStylesheet(xslDoc);
  58.     var e = document.getElementById(element);
  59.     if (e) {
  60.         while (e.firstChild) e.removeChild(e.firstChild);
  61.         e.appendChild(XSLT.transformToFragment(xmlDoc, document));
  62.     }
  63. }
  64.  
  65. function trim(stringToTrim) {
  66.     return stringToTrim.replace(/^\s+|\s+$/g,"");
  67. }
  68. function ltrim(stringToTrim) {
  69.     return stringToTrim.replace(/^\s+/,"");
  70. }
  71. function rtrim(stringToTrim) {
  72.     return stringToTrim.replace(/\s+$/,"");
  73. }
  74.  
  75. var xmlCodecInfo;
  76.  
  77. function onChangeAudioCodec(me)
  78. {
  79.     SetPref("videoenc.wm.audioCodec", me.selectedItem.label);
  80.     RefreshFormats(me.selectedIndex, document.getElementById('modeList').selectedIndex);
  81. }
  82.  
  83. function onChangeAudioMode(me)
  84. {
  85.     SetPref("videoenc.wm.audioMode", me.selectedItem.label);
  86.     RefreshFormats(document.getElementById('codecList').selectedIndex, me.selectedIndex);
  87.     SetPref('videoenc.wm.audioFormat', document.getElementById("formatList").selectedItem.getAttribute("label"));
  88. }
  89.  
  90. function onChangeVideoMode(me)
  91. {
  92.     SetPref('overall.video.mode', me.selectedIndex)
  93.     document.getElementById("bitrateDeck").selectedIndex = me.selectedIndex == 1 ? 1 : 0;
  94. }
  95.  
  96. function RefreshFormats(codecIndex, modeIndex)
  97. {
  98.     var r = xmlCodecInfo.getElementsByTagName("category");
  99.     var codecs = r[0].getElementsByTagName("codec");    // audio category
  100.     var modes = codecs[codecIndex].getElementsByTagName("mode");
  101.     var formats = modes[modeIndex].getElementsByTagName("format");
  102.  
  103.         var e = document.getElementById("formatList");
  104.     var name;
  105.     var idx = 0;
  106.     v = GetPref("videoenc.wm.audioFormat");
  107.     e.removeAllItems();
  108.         for (i = 0; i < formats.length; i++) {
  109.         name = trim(formats[i].childNodes[1].firstChild.nodeValue);
  110.                 e.appendItem(name, "", "");
  111.         if (name == v) idx = i;
  112.         }
  113.     e.selectedIndex = idx;
  114. }
  115.  
  116. function Refresh()
  117. {
  118.     var r = xmlCodecInfo.getElementsByTagName("category");
  119.  
  120.     // update audio codec list
  121.     var codecs = r[0].getElementsByTagName("codec");    // audio codecs
  122.     var v = GetPref("videoenc.wm.audioCodec");
  123.         e = document.getElementById("codecList");
  124.     var audioCodecIndex = 0;
  125.     var name;
  126.     e.removeAllItems();
  127.         for (i = 0; i < codecs.length; i++) {
  128.         name = codecs[i].getAttribute("name");
  129.                 e.appendItem(name, "", "");
  130.         if (name == v) audioCodecIndex = i;
  131.         }
  132.     e.selectedIndex = audioCodecIndex;
  133.  
  134.     // update mode list
  135.     var modes = codecs[audioCodecIndex].getElementsByTagName("mode");
  136.     v = GetPref("videoenc.wm.audioMode");
  137.         e = document.getElementById("modeList");
  138.     var audioModeIndex = 0;
  139.     e.removeAllItems();
  140.         for (i = 0; i < modes.length; i++) {
  141.         name = modes[i].getAttribute("name");
  142.                 e.appendItem(name, "", "");
  143.         if (v == name) audioModeIndex = i;
  144.         }
  145.     e.selectedIndex = audioModeIndex;
  146.  
  147.     // update video codec list
  148.     var codecs = r[1].getElementsByTagName("codec");    // video codecs
  149.         var e = document.getElementById("videoCodecList");
  150.     var videoCodecIndex = 0;
  151.     v = GetPref("videoenc.wm.videoCodec");
  152.     e.removeAllItems();
  153.         for (i = 0; i < codecs.length; i++) {
  154.         var name = trim(codecs[i].getAttribute("name"));
  155.                 e.appendItem(name, "", "");
  156.         if (name == v) videoCodecIndex = i;
  157.         }
  158.     e.selectedIndex = videoCodecIndex;
  159.     
  160.     RefreshFormats(audioCodecIndex, audioModeIndex);
  161.     
  162.     var vmode = GetPrefInt("overall.video.mode");
  163.     document.getElementById("videoMode").selectedIndex = vmode;
  164.     document.getElementById("bitrateDeck").selectedIndex = vmode == 1 ? 1 : 0;
  165.     
  166.     // video bitrate
  167.     e = document.getElementById("vb");
  168.     v = GetPref("overall.video.bitrate");
  169.     e.value = v;
  170.     e.nextSibling.setAttribute("curpos", v);
  171.     
  172.     // video quality
  173.     e = document.getElementById("vq");
  174.     v = GetPref("overall.video.quality");
  175.     e.value = v;
  176.     e.nextSibling.setAttribute("curpos", v);
  177. }
  178.  
  179. function Init()
  180. {
  181.     var e = document.getElementById("wmcfg");
  182.     window.innerWidth = e.width;
  183.     window.innerHeight = e.height;
  184.     
  185.     xmlCodecInfo = loadXML("/mc/wmcodecs.xml");
  186.     
  187.     Refresh();
  188. }
  189.